Computer software applications allow users to create documents containing data organized in a hierarchical structure such as spreadsheets, calendars, bank statements, product lists, outlines, etc. to exchange with other users over computer networks, such as the Internet. For example, users may create documents using Extensible Markup Language (XML) programs to exchange hierarchical data between computer systems that use different formats. XML documents have user-definable descriptive tags adjoining the data contained therein, making the data understandable by a wide variety of computers. The data may be imported from the document for viewing by the user by simply parsing the description-bearing tags. After viewing the data, the user may then export the data into a new or edited hierarchical formatted document to send to other users.
Parsing a document, however, is a slow and complicated process requiring a number of steps. Some current parsers, such as Simple API for XML (SAX), are event-based parsers in which XML tags are read sequentially, one at a time. However, the user is required to keep state and search through the entire file to find the desired XML tags. Other parsers, such as Document Object Model (DOM), are tree-based parsers which load an entire XML file into memory and which allow random access, thus making it easier to find desired XML tags than with event-based parsers. However, tree-based parsers require navigating through the “tree” to find the desired XML tags. Furthermore, such parsers require a significant amount of time and memory making them impractical for parsing large XML files.
Thus, there is currently no easy way to import data from a hierarchical structured document. That is, there is no easy way to selectively search the document for a specific tag or section containing data that may be of interest to a user, without having to search through the entire document with event-based parsers such as SAX or having to navigate through the tree while at the same time using significant time and memory resources with tree-based parsers such as DOM.
Similarly, while tree-based parsers such as DOM (which stores the entire file in memory), can export subtrees or other hierarchical data, such parsers are limited by the significant utilization of time and memory resources inherent in such parsers.
Therefore, there is a need in the art for a method and system for selectively importing and exporting content in hierarchical structured documents. It is with respect to these and other considerations that the present invention has been made.